// 本文件由gen_static_data_code生成
// 请遵照提示添加修改！！！
{{$TableName := .Name}}
{{$TableRawName := .RawName}}
{{range .Enums}}import { {{.Name}} } from './enums.sd';
{{end}}
//////////////////////////////////////////////////////////////////////////////////////////////////
// TODO 添加头部扩展代码
//<Head>{{.GetExtendContent "Head"}}//</Head>
//////////////////////////////////////////////////////////////////////////////////////////////////
{{if .Comment}}/**{{.Comment}} */{{end}}
export class Table{{.Name}} {
{{range .Fields}}
    {{$TypeName := ToTypeScriptType .Type}}
    {{if (eq $TypeName "number")}}
    private {{.RawName}}: {{$TypeName}} = 0;
    {{else if (eq $TypeName "string")}}
    private {{.RawName}}: {{$TypeName}} = "";
    {{else if (eq $TypeName "boolean")}}
    private {{.RawName}}: {{$TypeName}} = false;
    {{else}}
    private {{.RawName}}: {{$TypeName}};
    {{end}}
{{end}}
{{range .Fields}}
{{if .Comment}}    /**{{.Comment}} */{{end}}
    public get {{.Name}}(): {{ToTypeScriptType .Type}} {
        return this.{{.RawName}};
    }
{{end}}
    //请勿手动调用此方法
    public init(data){
        let self = this;
        for (const key in data) {
            if (data.hasOwnProperty(key)) {
                const element = data[key];
                self[key] = element;
            }
        }
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////
    // TODO 添加表结构扩展代码
    //<Table>{{.GetExtendContent "Table"}}//</Table>
    //////////////////////////////////////////////////////////////////////////////////////////////////
}
{{if .Attributes}}
//////////////////////////////////////////////////////////////////////////////////////////////////////
{{if .Comment}}/**{{.Comment}}全局属性 */{{end}}
export class Table{{.Name}}Global {
{{range .Attributes}}    private static {{.RawName}}: {{ToTypeScriptType .Type}};
{{end}}
{{range .Attributes}}
{{if .Comment}}    /**{{.Comment}} */{{end}}
    public static get {{.Name}}(): {{ToTypeScriptType .Type}} {
        return this.{{.RawName}};
    }
{{end}}
    //////////////////////////////////////////////////////////////////////////////////////////////////
    // TODO 添加全局属性扩展代码
    //<Global>{{.GetExtendContent "Global"}}//</Global>
    //////////////////////////////////////////////////////////////////////////////////////////////////
}
{{end}}
//////////////////////////////////////////////////////////////////////////////////////////////////
// TODO 添加尾部扩展代码
//<Tail>{{.GetExtendContent "Tail"}}//</Tail>
//////////////////////////////////////////////////////////////////////////////////////////////////
